/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package dao;

import MYSQLConection.OperacionesDB;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import negocio.HistoriaClinica;
import negocio.Medicamento;
import negocio.Receta;
import negocio.Usuario;

/**
 *
 * @author Adrian
 */
public class DaoHistoriaClinica {
    private static DaoHistoriaClinica instance;

    private DaoHistoriaClinica() {
    }

    public static DaoHistoriaClinica getInstance() {
        if (instance == null) {
            return instance = new DaoHistoriaClinica();
        }
        return instance;
    }
    
    
    public boolean NuevaHistoria(String cedula,int numero,String medico,String pronostico,String diagnostico) throws SQLException{
        OperacionesDB db = new OperacionesDB();
       String query="insert into HistoriaClinica values('"+cedula+"',"+numero+","+"'"+medico+"',"+"'"+pronostico+"',"+"'"+diagnostico+"')";
       if(db.ingreso(query))
       {
          return true; 
       }
       else
       {
           return false;
       }
    }
    public void Modificar(String cedula,int numero,String medico,String pronostico,String diagnostico) throws SQLException
    {
       OperacionesDB db = new OperacionesDB();
       String query = "UPDATE HistoriaClinica SET medico='"+medico+"',pronostico='"+pronostico+"',diagnostico='"+diagnostico+"' where cedula='"+cedula+"' and numero="+numero;
       db.modificacioneliminacion(query);
       db.cerrarConexion();
        
    }
     public void Eliminar(String cedula,int numero) throws SQLException
    {
         
        OperacionesDB db = new OperacionesDB();
      String query1 = "delete from HistoriaClinica where cedula='"+cedula+"' and numero="+numero;
       db.modificacioneliminacion(query1);
       db.cerrarConexion(); 
       
        
        
    }
          
      public ArrayList<HistoriaClinica> listar(String cedula) throws SQLException
    {
       OperacionesDB db = new OperacionesDB();
       ArrayList<HistoriaClinica> historias=new ArrayList();
         String query = "select * from HistoriaClinica where cedula='"+cedula+"'";
        ResultSet resultado = db.seleccion(query);
        HistoriaClinica hc=null; 

        while (resultado.next()) {
           int numero=Integer.parseInt(resultado.getString(2));
           hc = new HistoriaClinica(numero,resultado.getString(3),resultado.getString(4),resultado.getString(5));
            historias.add(hc);
        }
         db.cerrarConexion();
        
        return historias;
        
    }
    public boolean ExisteHistoria(String cedula ,int num) throws SQLException
    {
        OperacionesDB db = new OperacionesDB();
        int cont=0;
         String query = "select * from HistoriaClinica where cedula='"+cedula+"' and numero="+num;
        ResultSet resultado = db.seleccion(query);
        while (resultado.next()) {
            cont++;
        }
         db.cerrarConexion();
        if(cont!=0){return true;}else{return false;}
        
    }
    public boolean RegistrarReceta(String cedula,int numeroHistoria,int numero,String descripsion ) throws SQLException{
        OperacionesDB db = new OperacionesDB();
       String query="insert into receta values('"+cedula+"',"+numeroHistoria+","+numero+"'"+descripsion+"')";
       if(db.ingreso(query))
       {
          return true; 
       }
       else
       {
           return false;
       }
    }
    
     public void EliminarReceta(String cedula,int numeroHistoria,int numero) throws SQLException
    {
         
        OperacionesDB db = new OperacionesDB();
      String query1 = "delete from receta where cedula='"+cedula+"' and numeroHistoriaCli="+numeroHistoria+" and numero="+numero;
       db.modificacioneliminacion(query1);
       db.cerrarConexion(); 
       
        
        
    }
       public ArrayList<Receta> listarReceta(String cedula,int numeroHistoria) throws SQLException
    {
       OperacionesDB db = new OperacionesDB();
       ArrayList<Receta> recetas=new ArrayList();
         String query = "select * from receta where cedula='"+cedula+"' and numeroHistoriaCli="+numeroHistoria;
        ResultSet resultado = db.seleccion(query);
        Receta receta=null; 

        while (resultado.next()) {
           int numero=Integer.parseInt(resultado.getString(3));
           receta = new Receta(numero,resultado.getString(4));
            recetas.add(receta);
        }
         db.cerrarConexion();
        
        return recetas;
        
    }  
       public boolean RegistrarMedicamento(String cedula,int numeroHistoria,int numeroReceta,int numero,String nombre ,int cantidad,String indicaciones ) throws SQLException{
        OperacionesDB db = new OperacionesDB();
       String query="insert into medicamento values('"+cedula+"',"+numeroHistoria+","+numeroReceta+","+numero+",'"+nombre+"',"+cantidad+",'"+indicaciones+"')";
       if(db.ingreso(query))
       {
          return true; 
       }
       else
       {
           return false;
       }
    }
       
    public void EliminarMedicamento(String cedula,int numeroHistoria,int numeroReceta,int numero) throws SQLException
    {
         
        OperacionesDB db = new OperacionesDB();
      String query1 = "delete from medicamento where cedula='"+cedula+"' and numeroHistoriaCli="+numeroHistoria+" and numeroReceta="+numeroReceta+"and numero="+numero;
       db.modificacioneliminacion(query1);
       db.cerrarConexion(); 
       
        
        
    }
       public ArrayList<Medicamento> listarMedicamento(String cedula,int numeroHistoria,int numeroReceta) throws SQLException
    {
       OperacionesDB db = new OperacionesDB();
       ArrayList<Medicamento> medicinas=new ArrayList();
         String query = "select * from medicamento where cedula='"+cedula+"' and numeroHistoriaCli="+numeroHistoria+"and numeroReceta="+numeroReceta;
        ResultSet resultado = db.seleccion(query);
        Medicamento med=null; 

        while (resultado.next()) {
           int numero=Integer.parseInt(resultado.getString(4));
            int cantidad=Integer.parseInt(resultado.getString(6));
           med = new Medicamento(numero,resultado.getString(5),cantidad,resultado.getString(7));
            medicinas.add(med);
        }
         db.cerrarConexion();
        
        return medicinas;
        
    }      
       
       public int numeroHistoria(String cedula,int opc) throws SQLException
    {
        if(opc==1)
        {
          return 0;  
        }
        else
        {
        OperacionesDB db = new OperacionesDB();
      
        String query = "select MAX(numero) from historiaclinica where cedula='"+cedula+"'";
        ResultSet resultado = db.seleccion(query);
        int numero=0;
        
        while (resultado.next()) {
            numero=Integer.parseInt(resultado.getString(1));
           
        }
        
        return numero; 
        
        
        }
    }
        public int lista(String cedula) throws SQLException
    {
       OperacionesDB db = new OperacionesDB();
      
         String query = "select * from historiaclinica where cedula='"+cedula+"'";
        ResultSet resultado = db.seleccion(query);
        
        int cont=0;
        while (resultado.next()) {
           cont++;
        }
         db.cerrarConexion();
        
        return cont;
        
    }

}
